REM 测试CUDA代码编译的批处理脚本

SETLOCAL

REM 设置颜色
color 0A

REM 欢迎信息
echo =======================================================
echo            CUDA代码编译测试脚本            
echo =======================================================
echo 此脚本用于测试vectorAdd.cu文件的编译是否正常
echo.

REM 检查nvcc编译器是否可用
where nvcc >nul 2>nul
if %ERRORLEVEL% neq 0 (
    echo 错误: 未找到nvcc编译器
    echo 请确保已安装CUDA Toolkit 12.6并配置了环境变量
    echo 详细信息请参考CUDA_COMPILER_SETUP_GUIDE.md
    color 0C
    pause
    exit /b 1
) else (
    echo 已找到nvcc编译器
)

REM 检查Visual Studio C++编译器(cl.exe)是否可用
where cl.exe >nul 2>nul
if %ERRORLEVEL% neq 0 (
    echo 错误: 未找到Visual Studio C++编译器(cl.exe)
    echo 这是编译CUDA代码所必需的组件
    echo 请参考CUDA_COMPILER_SETUP_GUIDE.md文件获取详细的安装指南
    color 0C
    pause
    exit /b 1
) else (
    echo 已找到Visual Studio C++编译器
)

REM 检查vectorAdd.cu文件是否存在
if not exist vectorAdd.cu (
    echo 错误: 未找到vectorAdd.cu文件
    color 0C
    pause
    exit /b 1
) else (
    echo 已找到vectorAdd.cu文件
    echo 显示文件前几行内容:
    echo -------------------------
    type vectorAdd.cu | head -n 15
    echo -------------------------
)

REM 编译CUDA核函数
echo.
echo 正在编译CUDA核函数为PTX文件...
nvcc -ptx vectorAdd.cu -o vectorAdd.ptx

if %ERRORLEVEL% neq 0 (
    echo.
    echo 错误: PTX文件编译失败
    echo 请检查以下几点:
    echo 1. CUDA Toolkit 12.6是否正确安装
    echo 2. Visual Studio C++编译器是否正确配置
    echo 3. vectorAdd.cu文件内容是否有语法错误
    echo 详细信息请参考CUDA_COMPILER_SETUP_GUIDE.md
    color 0C
    pause
    exit /b 1
) else (
    echo.
    echo 成功: PTX文件编译成功！
    echo vectorAdd.ptx文件已生成
    echo 编译测试通过，可以在GPU模式下运行Java程序
    color 0A
)

pause